5244a7fcdaf82d71c7166dde7b256e7a087a3955,source/com/intellij/openapi/roots/impl/DirectoryIndexImpl.java,DirectoryIndexImpl,_initialize,#boolean#VirtualFile#,183

Before Change



          VirtualFile[] sourceRoots = orderEntry.getFiles(OrderRootType.SOURCES);
          for (VirtualFile sourceRoot : sourceRoots) {
            fillMapWithOrderEntries(sourceRoot, oneEntryList, entryModule, null, null, forDir, null, null, fileTypeManager);
          }
        }
        else if (orderEntry instanceof ModuleSourceOrderEntry) {

After Change


      ModuleRootManager rootManager = ModuleRootManager.getInstance(module);

      OrderEntry[] orderEntries = rootManager.getOrderEntries();
      final Map<VirtualFile, List<OrderEntry>> depEntries = new HashMap<VirtualFile, List<OrderEntry>>();
      final Map<VirtualFile, List<OrderEntry>> libClassRootEntries = new HashMap<VirtualFile, List<OrderEntry>>();
      final Map<VirtualFile, List<OrderEntry>> libSourceRootEntries = new HashMap<VirtualFile, List<OrderEntry>>();
      for (OrderEntry orderEntry : orderEntries) {
        if (orderEntry instanceof ModuleOrderEntry) {
          VirtualFile[] importedClassRoots = orderEntry.getFiles(OrderRootType.COMPILATION_CLASSES);
          for (VirtualFile importedClassRoot : importedClassRoots) {
            addEntryToMap(importedClassRoot, orderEntry, depEntries);
          }
          VirtualFile[] sourceRoots = orderEntry.getFiles(OrderRootType.SOURCES);
          for (VirtualFile sourceRoot : sourceRoots) {
            addEntryToMap(sourceRoot, orderEntry, depEntries);
          }
        } else if (orderEntry instanceof ModuleSourceOrderEntry) {
          List<OrderEntry> oneEntryList = Arrays.asList(new OrderEntry[]{orderEntry});
          Module entryModule = orderEntry.getOwnerModule();

          VirtualFile[] sourceRoots = orderEntry.getFiles(OrderRootType.SOURCES);
          for (VirtualFile sourceRoot : sourceRoots) {
            fillMapWithOrderEntries(sourceRoot, oneEntryList, entryModule, null, null, forDir, null, null, fileTypeManager);
          }
        } else if (orderEntry instanceof LibraryOrderEntry || orderEntry instanceof JdkOrderEntry) {
          VirtualFile[] classRoots = orderEntry.getFiles(OrderRootType.CLASSES);
          for (VirtualFile classRoot : classRoots) {
            addEntryToMap(classRoot, orderEntry, libClassRootEntries);
          }
          VirtualFile[] sourceRoots = orderEntry.getFiles(OrderRootType.SOURCES);
          for (VirtualFile sourceRoot : sourceRoots) {
            addEntryToMap(sourceRoot, orderEntry, libSourceRootEntries);
          }
        }
      }

      for (Map.Entry<VirtualFile, List<OrderEntry>> mapEntry : depEntries.entrySet()) {
        final VirtualFile vRoot = mapEntry.getKey();
        final List<OrderEntry> entries = mapEntry.getValue();
        fillMapWithOrderEntries(vRoot, entries, null, null, null, forDir, null, null, fileTypeManager);
      }

      for (Map.Entry<VirtualFile, List<OrderEntry>> mapEntry : libClassRootEntries.entrySet()) {